package com.itheima.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.dao.CheckItemDao;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.exception.CheckItemException;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service(interfaceClass = CheckItemService.class)
@Transactional
public class CheckItemServiceImpl implements CheckItemService {


    @Autowired
    private CheckItemDao checkItemDao;

    //1.新建
            @Override
            public void add(CheckItem checkItem) {

                checkItemDao.add(checkItem);
            }
    //2.分页操作
            @Override
            public PageResult findPage(QueryPageBean queryPageBean) {
                //运用分页·插件/
                /*第一步 告诉mybatis  我要分页*/
                com.github.pagehelper.Page  page =  PageHelper.startPage(queryPageBean.getCurrentPage(),queryPageBean.getPageSize());

                /*第二部  做一个简单的查询sql  跟分页没关系    查询出来的是checkitem信息  */
                List<CheckItem> checkItems = checkItemDao.findPage(queryPageBean.getQueryString());

                return new PageResult(page.getTotal(),checkItems);
            }

    /*3.删除操作*/
            @Override
            public void delete(Integer id) throws CheckItemException{
                //现查询 要删除的id项  又没有与检查组关联
                Integer count = checkItemDao.findCountByCheckItemID(id);
                // 对查询出来的 记录 进行 判断
                if (count>0){
                    //说明有关联  提示用户不能删除  定义一个异常
                        throw  new CheckItemException("存在引用不能删除");
                }else {
                    //说明没有关联  则可以删除
                    checkItemDao.delete(id);
                }
            }


    /*4. 编辑 操作*/
            /*4.1  从数据库查询数据 回显操作*/
                @Override
                public CheckItem findById(Integer id) {
                    return checkItemDao.findById(id);
                }
            /*4.2  编辑数据*/
                @Override
                public void edit(CheckItem checkItem) {
                    checkItemDao.edit(checkItem);
                }


    //5. 新建项目组
                //5.1 弹出窗口之前  对所有项目进行查询
                @Override
                public List<CheckItem> findAllSins() {
                    return checkItemDao.findAllSins();
                }
}
